# 实训

#### 任务一 数据库设计
1.打开Navicat,点击"文件"下的"新建连接"的"MySQL"的连接；
2.在Navicat中新建一个hcit_msg.sql数据库；
3.新建comment和admin的表；
4.新建完成后，输入对应的内容；
5.内容输入完成后，把表导出。


#### 任务二 数据库类的设计
1.在PHP的根目录下新建一个MySQLPDO.class.php的文件，并把书上的代码打上去。
2.打完后，在相同的目录下创建测试文件test_MySQLPDO.php,用于实例化并调用数据库操作类。


#### 任务三 设计模型类
1.  创建基础模型类，在php刚才的目录下创建model.class.php的文件，并把内容打上去；
2.  创建留言模型类，在php刚才的目录下创建commentModel.class.php的文件，并把内容打上去；
3.  创建测试留言模型类，在php刚才的目录下创建test_commentModel.class.php的文件，并把内容打上去,并进行测试；

#### 任务四 设计控制器类
1.  在PHP的根目录下新建一个commentController.class.php的留言控制器类,并把书上的代码打上去。创建了come控制器类，类中有listAction()和infoAction两个方法，用于查看留言列表和留言详细信息。在listAction()，首先较入模型文件，然后实例化模型，调用getAII0方法取得数据，最后载入comment_list.html视图文件。
2.  在PHP的根目录下新建一个comment_list.html的留言列表视图文件,并把书上的代码打上去。创建了comment_list.html 视图文件，使用PHP替代语法和HTML结合的形式，输出$data数组中的数据。
3.  在PHP的根目录下新建一个comment_info.html的留言详细视图文件,并把书上的代码打上去。步创建视图文件comment_info.php。
4.  4.创建index.php入口文件，用于载入和实例化comment控制器，根据有无GET参数调用不同的方法。至此，模型、视图和控划器三者的分离已经实现了。


#### 任务五 设计前端控制器
1.  修改入口文件index.php。  
2.  修改试图文件中的链接。将comment_list.html的第21行。
3.  在浏览器中访问index.php，运行结果。


#### 任务六 设计框架类
1.为项目创建配置文件"app.conf.php"，利用配置文件来统一管理项目中所有可修改的参数和设置。
2. 在framework目录下创建一个框架基础类framework。class.php。
3.修改基础模型类model.class.php中的initDB()方法，如书上230页所示；
4.修改控制器commentController.class.php中载入视图的代码；
5.修改入口文件index.php。

#### 任务七 设计前台页面展示
1.修改\applicaton\home\view\comment_list.html；
2.创建层式表文件home.css，并把内容输入，保存在公共文件目录public目录中。
3.创建前台默认的控制器发法，修改commentController.class.php文件。
5.进行测试。





#### 任务八 设计发表留言功能
1.在视图文件comment_list.html发表留言的位置添加form标签，并为表单添加域name属性。
2.在comment控制器中添加addAction()方法，用来处理表单。
3.创建comment模型并实现insert方法。
4.测试留言发表功能。




#### 任务九 设计留言列表功能
1.修改comment控制器中的listAction()方法,调用模型获取需要的数据。
2.在comment模型中添加getAll()方法和getNuber()方法。
3.修改试图文件comment_list.html,在HTML中嵌入PHP代码输出数据。
4.测试留言列表功能。



#### 任务十 设计页面跳转功能
1.由于处理页面导航链接和SQL语句中的LIMIT条件。
2.设计平台控制器
3.设计跳转视图文件
4.设计留言控制器
5.测试页面跳转功能

#### 任务十一 设计数据分页功能
1.设计配置文件。修改配置文件，为前台，后台配置添加每页显示平论数。
2.设计分页类。在框架中封装一个分页类，实现自动生成LIMIT和分页导航链接。
3.设计框架基础类。在框架基础类中，将分页类添加到自动加载方法的基础类列表中。
4.设计留言控制。在comment控制器的listAction()方法中实例化并调用分页类。
5.设计留言模型。在comment模型的getALL()方法中的SQL查询语句中添加limit限制
6.设计视图文件。在视图文件中输出分页导航链接
7.测试分页


#### 任务十二 设计数据过滤功能
1.测试分页。
2.在基础模型类中增加过滤方法，实现对$_POST数组的过滤。
3.在comment模型的insert()方法中，对输入数据进行过滤。
4.在真实项目中还需要验证每个字段的长度。格式等是否符合要求。


#### 任务十三 防止SQL注入
1.设计数据库操作类。在MYSQLPDO类中加入预处理语句的支持。
2.设计留言模型。在comment模型的insert()方法中调用预处理执行SQL的方法。
3.测试防止SQL注入。测试系统能否防止SQL注入。


#### 任务十四 设计用户登录功能
1.设计平台控制器.在后台的平台控制器中验证用户是否登录
2.设计管理员控制器。创建admiin控制器并实现用户登录和退出的方法。
3.设计管理员模型。创建admin模型并 实现checkByLogin()方法。
4.设计登录页面视图文件。在数库admin表中插入管理记录。
5.后台样式表文件。制作后台登录页面视图文件。
6.测试用户登录功能。后台样式文件admin.css


#### 任务十五 设计后台留言列表
1.设计留言控制器；创建后台comment控制器和listAction()方法。
2.设计留言模型；创建后台comment模型和控制器中用到的相关方法。
3.设计留言列表视图文件；创作后台留言列表视图文件。
4.测试留言列表。


#### 任务十六 设计留言回复与修改
1.设计留言控制器；在comment控制器中增加replyAction()方法和saveAction()方法，分别用于展示表单和接受表单。
2.设计留言模型；在comment模型中增加getById()方法和saveAction()方法，分别用于取得指定ID记录和更新记录。
3.设计留言回复与修改视图文件；制作留言回复与修改的视图文件。
4.测试留言回复与修改;测试留言回复与修改功能。



#### 任务十七 设计留言删除
1.设计留言控制器；
在comment控制器中增加deleteAction()方法，用于删除指定ID的留言。
2.设计留言模型；
在comment模型中增加deleteByID()方法。
3.设计测试留言删除功能
测试删除功能，当删除成功后跳转到后台comment控制器中的list方法，指定ID的留言记录已经从数据库中删除。